<!Doctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<title>GCC 参数详解 | 菜鸟教程</title>

  <meta name='robots' content='max-image-preview:large' />
<link rel='stylesheet' id='classic-theme-styles-css' href='../0/classic-themes.min.css?ver=6.2' type='text/css' media='all' />
<link rel="canonical" href="../w3cnote/gcc-parameter-detail.html" />
<meta name="keywords" content="GCC 参数详解">
<meta name="description" content="gcc 与 g++ 分别是 gnu 的 c &amp; c++ 编译器 gcc/g++ 在执行编译工作的时候，总共需要4步：  1、预处理,生成 .i 的文件[预处理器cpp]  2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]  3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]  4、连接目标代码, 生成可执行程序 [链接器ld]   参数详解 -x language filename  设定..">
		
	<link rel="shortcut icon" href="https://static.runoob.com/images/favicon.ico">
	<link rel="stylesheet" href="../0/style.css?v=1.170" type="text/css" media="all" />	
	<link rel="stylesheet" href="../0/font-awesome.min.css" media="all" />	
  <!--[if gte IE 9]><!-->
  <script src=""></script>
  <!--<![endif]-->
  <!--[if lt IE 9]>
     <script src=""></script>
     <script src=""></script>
  <![endif]-->
  <link rel="apple-touch-icon" href="https://static.runoob.com/images/icon/mobile-icon.png"/>
  <meta name="apple-mobile-web-app-title" content="菜鸟教程">
</head>
<body>

<!--  头部 -->
<div class="container logo-search">

  <div class="col search row-search-mobile">
    <form action="index.php">
      <input class="placeholder" placeholder="搜索……" name="s" autocomplete="off">
      
    </form>
  </div>

  <div class="row">
    <div class="col logo">
      <h1><a href="../">菜鸟教程 -- 学的不仅是技术，更是梦想！</a></h1>
    </div>
        <div class="col right-list"> 
    <button class="btn btn-responsive-nav btn-inverse" data-toggle="collapse" data-target=".nav-main-collapse" id="pull" style=""> <i class="fa fa-navicon"></i> </button>
    </div>
        
    <div class="col search search-desktop last">
      <div class="search-input" >
      <form action="//www.runoob.com/" target="_blank">
        <input class="placeholder" id="s" name="s" placeholder="搜索……"  autocomplete="off" style="height: 44px;">
      </form>
      
      </div>
    </div>
  </div>
</div>



<!-- 导航栏 -->
<div class="container navigation">
    <div class="row">
        <div class="col nav">
            

                        <ul class="pc-nav" id="note-nav">
                <li><a href="../">首页</a></li>
                <li><a href="../w3cnote">笔记首页</a></li>
                <li><a href="../w3cnote/android-tutorial-intro.html" title="Android 基础入门教程">Android</a></li>
                <li><a href="../w3cnote/es6-tutorial.html" title="ES6 教程">ES6 教程</a></li>
                <li><a href="../w3cnote/ten-sorting-algorithm.html" title="排序算法">排序算法</a></li>
                <li><a href="../w3cnote/hadoop-tutorial.html" title="Hadoop 教程">Hadoop</a></li>
                <li><a href="../w3cnote/zookeeper-tutorial.html" title="Zookeeper 教程">Zookeeper</a></li>
                <li><a href="../w3cnote/verilog-tutorial.html" title="Verilog 教程">Verilog</a></li>
                <li><a href="../w3cnote_genre/code" title="编程技术">编程技术</a></li> 
                <li><a href="../w3cnote_genre/coderlife" title="程序员人生">程序员人生</a></li>
                
                <!--<li><a href="javascript:;" class="runoob-pop">登录</a></li>
                
                
                        <li>
                <a style="font-weight:bold;" href="../linux/linux-tutorial.html#yunserver" target="_blank" onclick="_hmt.push(['_trackEvent', 'aliyun', 'click', 'aliyun'])" title="kkb">云服务器</a>
                </li>
                <li><a href="http://gk.link/a/104mQ" target="_blank" style="font-weight: bold;"onclick="_hmt.push(['_trackEvent', '极客时间', 'click', 'jike'])" title="我的圈子">极客时间</a></li>
            
                
                <li><a target="_blank" href="../shoppinglist" rel="nofollow">知识店铺</a></li> 
        -->
            </ul>
                        
              
            <ul class="mobile-nav">
                <li><a href="../w3cnote">首页</a></li>
                <li><a href="../w3cnote_genre/android" target="_blank" title="Android 基础入门教程">Android</a></li>
                <li><a href="../w3cnote/es6-tutorial.html" target="_blank" title="ES6 教程">ES6</a></li>
                <li><a href="../w3cnote_genre/joke" target="_blank" title="程序员笑话">逗乐</a></li>
                
                <a href="javascript:void(0)" class="search-reveal">Search</a> 
            </ul>
            
        </div>
    </div>
</div>


<!--  内容  -->
<div class="container main">
	<div class="row">

		<div class="col middle-column big-middle-column">
	 			<div class="article">
			<div class="article-heading">
				<h2>GCC 参数详解</h2>				<h3><em>分类</em> <a href="../w3cnote_genre/code" title="编程技术" >编程技术</a> </h3>
			</div>
			<div class="article-body note-body">
				<div class="article-intro">
					
<p>gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候，总共需要4步：</p>
<ul><li>
1、预处理,生成 .i 的文件[预处理器cpp] </li><li>
2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs] </li><li>
3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as] </li><li>
4、连接目标代码, 生成可执行程序 [链接器ld] </li></ul>

<h3>参数详解</h3>
<p><strong>-x language filename </strong></p>
<p>设定文件所使用的语言, 使后缀名无效, 对以后的多个有效。也就是根据约定 C 语言的后缀名称是 .c 的，而 C++ 的后缀名是 .C 或者 .cpp, 如果你很个性，决定你的 C 代码文件的后缀名是 .pig 哈哈，那你就要用这个参数, 这个参数对他后面的文件名都起作用，除非到了下一个参数的使用。 可以使用的参数吗有下面的这些：'c', 'objective-c', 'c-header', 'c++', 'cpp-output', 'assembler', 与 'assembler-with-cpp'。</p>
<p>看到英文，应该可以理解的。 </p>
<p>例子用法:</p> 
<pre>gcc -x c hello.pig </pre>
　　 
<p><strong>-x none filename </strong></p>
<p>关掉上一个选项，也就是让gcc根据文件名后缀，自动识别文件类型 。</p>
<p>例子用法: </p>
<pre>gcc -x c hello.pig -x none hello2.c </pre>
　　 
<p><strong>-c </strong></p>
<p>只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 </p>
<p>例子用法: </p>
<pre>gcc -c hello.c </pre>
<p>他将生成 .o 的 obj 文件 </p>
<p><strong>-S </strong></p>
<p>只激活预处理和编译，就是指把文件编译成为汇编代码。 </p>
<p>例子用法: </p>
<pre>gcc -S hello.c </pre>
<p>他将生成 .s 的汇编代码，你可以用文本编辑器察看。 </p>
<p><strong>-E </strong></p>
<p>只激活预处理,这个不生成文件, 你需要把它重定向到一个输出文件里面。 </p>
<p>例子用法: </p>
<pre>gcc -E hello.c &gt; pianoapan.txt 
gcc -E hello.c | more </pre>
<p>慢慢看吧, 一个 hello word 也要与处理成800行的代码。 </p>
<p><strong>-o </strong></p>
<p>制定目标名称, 默认的时候, gcc 编译出来的文件是 a.out, 很难听, 如果你和我有同感，改掉它, 哈哈。</p>
<p>例子用法: </p>
　　<pre>gcc -o hello.exe hello.c (哦,windows用习惯了) 
　　gcc -o hello.asm -S hello.c</pre> 
<p><strong>-pipe </strong></p>
　　<p>使用管道代替编译中临时文件, 在使用非 gnu 汇编工具的时候, 可能有些问题。 </p>
　　<pre>gcc -pipe -o hello.exe hello.c </pre>
<p><strong>-ansi </strong></p>
关闭  gnu c中与 ansi c 不兼容的特性, 激活 ansi c 的专有特性（包括禁止一些 asm inline typeof 关键字, 以及 UNIX,vax 等预处理宏）。
<p><strong>-fno-asm </strong></p>
<p>此选项实现 ansi 选项的功能的一部分，它禁止将 asm, inline 和 typeof 用作关键字。 </p>
　　　　 
<p><strong>-fno-strict-prototype </strong></p>
<p>只对 g++ 起作用, 使用这个选项, g++ 将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数。</p>
<p>而 gcc 无论是否使用这个参数, 都将对没有带参数的函数, 认为城没有显式说明的类型。</p>

　　 
<p><strong>-fthis-is-varialble </strong></p>
<p>就是向传统 c++ 看齐, 可以使用 this 当一般变量使用。 </p>
　　 
<p><strong>-fcond-mismatch </strong></p>
<p>允许条件表达式的第二和第三参数类型不匹配, 表达式的值将为 void 类型。 </p>
　　 
<p><strong>-funsigned-char 、-fno-signed-char、-fsigned-char 、-fno-unsigned-char </strong></p>
<p>这四个参数是对 char 类型进行设置, 决定将 char 类型设置成 unsigned char(前两个参数)或者 signed char(后两个参数)。 </p>
　　 
<p><strong>-include file </strong></p>
<p>包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用 <span class="marked">#include&lt;filename&gt;</span>。</p>
<p>例子用法: </p>
　　<pre>gcc hello.c -include /root/pianopan.h </pre>
　　 
<p><strong>-imacros file</strong></p> 
　　<p>将 file 文件的宏, 扩展到 gcc/g++ 的输入文件, 宏定义本身并不出现在输入文件中。 </p>
　　 
<p><strong>-Dmacro </strong></p>
<p>相当于 C 语言中的 <span class="marked">#define macro</span></p>
　　 
<p><strong>-Dmacro=defn </strong></p>
<p>相当于 C 语言中的 <span class="marked">#define macro=defn</span> </p>
　　 
<p><strong>-Umacro </strong></p>
<p>相当于 C 语言中的 <span class="marked">#undef macro </span></p>
<p><strong>-undef </strong></p>
　　<p>取消对任何非标准宏的定义 </p>
　　 
<p><strong>-Idir </strong></p>
<p>在你是用<span class="marked"> #include "file"</span> 的时候, gcc/g++ 会先在当前目录查找你所制定的头文件, 如果没有找到, 他回到默认的头文件目录找, 如果使用 -I 制定了目录,他会先在你所制定的目录查找, 然后再按常规的顺序去找。</p>
<p>对于 #include&lt;file&gt;, gcc/g++ 会到 -I 制定的目录查找, 查找不到, 然后将到系统的默认的头文件目录查找 。</p>
　　 
<p><strong>-I-</strong> </p>
　　<p>就是取消前一个参数的功能, 所以一般在 -Idir 之后使用。 </p>
　　 
<p><strong>-idirafter dir </strong></p>
<p>在 -I 的目录里面查找失败, 讲到这个目录里面查找。 </p>
　　 
<p><strong>-iprefix prefix 、-iwithprefix dir </strong></p>
<p>一般一起使用, 当 -I 的目录查找失败, 会到 prefix+dir 下查找 </p>
　　 
<p><strong>-nostdinc </strong></p>
　　<p>使编译器不再系统默认的头文件目录里面找头文件, 一般和 -I 联合使用,明确限定头文件的位置。</p>
　　 
<p><strong>-nostdin C++ </strong></p> 
　<p>规定不在 g++ 指定的标准路经中搜索, 但仍在其他路径中搜索, 此选项在创 libg++ 库使用 。</p>
　　 
<p><strong>-C </strong></p> 
　<p>在预处理的时候, 不删除注释信息, 一般和-E使用, 有时候分析程序，用这个很方便的。</p> 

　　 
<p><strong>-M </strong></p> 
　<p>生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用 <span class="marked">gcc -M hello.c</span> 来测试一下，很简单。</p> 
　　 
<p><strong>-MM </strong></p> 
　<p>和上面的那个一样，但是它将忽略由 <span class="marked">#include&lt;file&gt;</span> 造成的依赖关系。 
　　 
<p><strong>-MD </strong></p> 
　<p>和-M相同，但是输出将导入到.d的文件里面 
　　 
<p><strong>-MMD </strong></p> 
　<p>和 -MM 相同，但是输出将导入到 .d 的文件里面。</p>  
　　 
<p><strong>-Wa,option </strong></p> 
　<p>此选项传递 option 给汇编程序; 如果 option 中间有逗号, 就将 option 分成多个选项, 然 
后传递给会汇编程序。</p> 
　　 
<p><strong>-Wl.option </strong></p> 
　<p>此选项传递 option 给连接程序; 如果 option 中间有逗号, 就将 option 分成多个选项, 然 
后传递给会连接程序。</p>  
　　 
<p><strong>-llibrary </strong></p> 
　<p>制定编译的时候使用的库 </p> 
　　<p>例子用法 </p> 
　　<pre>gcc -lcurses hello.c</pre>
　　<p>使用 ncurses 库编译程序 </p>
　　 
<p><strong>-Ldir </strong></p> 
　　<p>制定编译的时候，搜索库的路径。比如你自己的库，可以用它制定目录，不然编译器将只在标准库的目录找。这个dir就是目录的名称。</p> 
　　 
<p><strong>-O0 、-O1 、-O2 、-O3 </strong></p> 
　　<p>编译器的优化选项的 4 个级别，-O0 表示没有优化, -O1 为默认值，-O3 优化级别最高。</p> 　 
　 　　 
<p><strong>-g </strong></p> 
　　<p>只是编译器，在编译的时候，产生调试信息。</p> 
　　 
<p><strong>-gstabs </strong></p> 
　　<p>此选项以 stabs 格式声称调试信息, 但是不包括 gdb 调试信息。</p>  
　　 
<p><strong>-gstabs+ </strong></p> 
　　<p>此选项以 stabs 格式声称调试信息, 并且包含仅供 gdb 使用的额外调试信息。</p> 
　　 
<p><strong>-ggdb </strong></p> 
　　<p>此选项将尽可能的生成 gdb 的可以使用的调试信息。</p>  
<p><strong>-static </strong></p> 
　　<p>此选项将禁止使用动态库，所以，编译出来的东西，一般都很大，也不需要什么动态连接库，就可以运行。</p> 
<p><strong>-share </strong></p> 
　<p>此选项将尽量使用动态库，所以生成文件比较小，但是需要系统由动态库。</p> 
<p><strong>-traditional </strong></p> 
　　<p>试图让编译器支持传统的C语言特性。</p> 


<p>GCC 是 GNU 的 C 和 C++ 编译器。实际上，GCC 能够编译三种语言：C、C++ 和 Object C（C 语言的一种面向对象扩展）。利用 gcc 命令可同时编译并连接 C 和 C++ 
源程序。 </p>
<p>如果你有两个或少数几个 C 源文件，也可以方便地利用 GCC 编译、连接并生成可执行文件。例如，假设你有两个源文件 main.c 和 factorial.c 两个源文件，现在要编 
译生成一个计算阶乘的程序。 </p>
<div class="example">
<h2 class="example">factorial.c 文件代码</h2>
<div class="example_code">
<div class="hl-main"><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">factorial</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">n</span><span class="hl-brackets">)</span><span class="hl-code"> 
</span><span class="hl-brackets">{</span><span class="hl-code"> 
　　</span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">n</span><span class="hl-code"> &lt;= </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> 
　　　</span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-number">1</span><span class="hl-code">; 
　　</span><span class="hl-reserved">else</span><span class="hl-code"> 
　　　</span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">factorial</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">n</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> * </span><span class="hl-identifier">n</span><span class="hl-code">; 
</span><span class="hl-brackets">}</span></div>
</div>
</div>
<div class="example">
<h2 class="example">main.c 文件代码</h2>
<div class="example_code">
<div class="hl-main"><span class="hl-prepro">#include</span><span class="hl-prepro">　</span><span class="hl-quotes">&lt;</span><span class="hl-string">stdio.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"> </span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include</span><span class="hl-prepro">　</span><span class="hl-quotes">&lt;</span><span class="hl-string">unistd.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"> </span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">factorial</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">n</span><span class="hl-brackets">)</span><span class="hl-code">; 
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">main</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">argc</span><span class="hl-code">, </span><span class="hl-types">char</span><span class="hl-code"> **</span><span class="hl-identifier">argv</span><span class="hl-brackets">)</span><span class="hl-code"> 
</span><span class="hl-brackets">{</span><span class="hl-code"> 
　　</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">n</span><span class="hl-code">; 
　　</span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">argc</span><span class="hl-code"> &lt; </span><span class="hl-number">2</span><span class="hl-brackets">)</span><span class="hl-code"> 
　　</span><span class="hl-brackets">{</span><span class="hl-code"> 
　　　　</span><span class="hl-identifier">printf</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">Usage: %s n</span><span class="hl-special">\</span><span class="hl-string">n</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">argv</span><span class="hl-code"> </span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-code">; 
　　　　</span><span class="hl-reserved">return</span><span class="hl-code"> -</span><span class="hl-number">1</span><span class="hl-code">; 
　　</span><span class="hl-brackets">}</span><span class="hl-code"> 
　　</span><span class="hl-reserved">else</span><span class="hl-code"> 
　　</span><span class="hl-brackets">{</span><span class="hl-code"> 
　　　</span><span class="hl-identifier">n</span><span class="hl-code"> = </span><span class="hl-identifier">atoi</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">argv</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-code">; 
　　　</span><span class="hl-identifier">printf</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">Factorial of %d is %d.</span><span class="hl-special">\</span><span class="hl-string">n</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">n</span><span class="hl-code">, </span><span class="hl-identifier">factorial</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">n</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">; 
　　 </span><span class="hl-brackets">}</span><span class="hl-code"> 
　　</span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-number">0</span><span class="hl-code">; 
</span><span class="hl-brackets">}</span></div>
</div>
</div>
<p>利用如下的命令可编译生成可执行文件，并执行程序： </p>
<pre>$ gcc -o factorial main.c factorial.c 
$ ./factorial 5 
Factorial of 5 is 120. </pre>
<p>GCC 可同时用来编译 C 程序和 C++ 程序。一般来说，C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。在 Linux 中，C 源文件的后缀名为 .c，而 C++ 源文件的后缀名为 .C 或 .cpp。但是，gcc 命令只能编译 C++ 源文件，而不能自动和 C++ 程序使用的库连接。因此，通常使用 g++ 命令来完成 C++ 程序的编译和连接，该程序会自动调用 gcc 实现编译。假设我们有一个如下的 C++ 源文件（hello.c）： </p>
<div class="example">
<h2 class="example">hello.c 文件代码</h2>
<div class="example_code">
<div class="hl-main"><span class="hl-prepro">#include</span><span class="hl-prepro"> </span><span class="hl-quotes">&lt;</span><span class="hl-string">iostream</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"> </span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">main</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code"> 
</span><span class="hl-brackets">{</span><span class="hl-code"> 
　　</span><span class="hl-identifier">cout</span><span class="hl-code"> &lt;&lt; </span><span class="hl-quotes">&quot;</span><span class="hl-string">Hello, world!</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">endl</span><span class="hl-code">; 
</span><span class="hl-brackets">}</span></div>
</div>
</div>
<p>则可以如下调用 g++ 命令编译、连接并生成可执行文件： </p>
<pre>$ g++ -o hello hello.c 
$ ./hello 
Hello, world! </pre>

<h3>gcc 命令的常用选项 </h3>
<table class="reference">
<tr><th>
选项</th><th> 解释</th></tr>
<tr><td> 
-ansi</td><td> 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色， 例如 asm 或 typeof 关键词。 
</td></tr><tr><td> -c </td><td>只编译并生成目标文件。 
</td></tr><tr><td> -DMACRO</td><td> 以字符串"1"定义 MACRO 宏。 
</td></tr><tr><td> -DMACRO=DEFN</td><td> 以字符串"DEFN"定义 MACRO 宏。 
</td></tr><tr><td> -E </td><td>只运行 C 预编译器。 
</td></tr><tr><td> -g </td><td>生成调试信息。GNU 调试器可利用该信息。 
</td></tr><tr><td> -IDIRECTORY </td><td>指定额外的头文件搜索路径DIRECTORY。 
</td></tr><tr><td> -LDIRECTORY</td><td> 指定额外的函数库搜索路径DIRECTORY。 
</td></tr><tr><td> -lLIBRARY </td><td>连接时搜索指定的函数库LIBRARY。 
</td></tr><tr><td> -m486 </td><td>针对 486 进行代码优化。 
</td></tr><tr><td> -o FILE </td><td>生成指定的输出文件。用在生成可执行文件时。 
</td></tr><tr><td> -O0 </td><td>不进行优化处理。 
</td></tr><tr><td> -O 或 -O1 </td><td>优化生成代码。 
</td></tr><tr><td> -O2 </td><td>进一步优化。 
</td></tr><tr><td> -O3 </td><td>比 -O2 更进一步优化，包括 inline 函数。 
</td></tr><tr><td> -shared </td><td>生成共享目标文件。通常用在建立共享库时。 
</td></tr><tr><td> -static </td><td>禁止使用共享连接。 
</td></tr><tr><td> -UMACRO</td><td> 取消对 MACRO 宏的定义。 
</td></tr><tr><td> -w </td><td>不生成任何警告信息。 
</td></tr><tr><td> -Wall </td><td>生成所有警告信息。</td></tr></table>				</div>
			</div>
			<div class="previous-next-links">
			<div class="previous-design-link">← <a href="../w3cnote/css-position-static-relative-absolute-fixed.html" rel="prev"> CSS  position 相对定位和绝对定位</a> </div>
			<div class="next-design-link"><a href="../w3cnote/nvm-manager-node-versions.html" rel="next"> 使用 nvm 管理不同版本的 node 与 npm</a> →</div>
			</div>
						<div class="article-heading-ad" id="w3cnote-ad728">
			<script async src=""></script>
			<!-- 移动版 自动调整 -->
			<ins class="adsbygoogle"
			     style="display:inline-block;min-width:300px;max-width:970px;width:100%;height:90px"
			     data-ad-client="ca-pub-5751451760833794"
			     data-ad-slot="1691338467"
			     data-ad-format="horizontal"></ins>
			<script>
			(adsbygoogle = window.adsbygoogle || []).push({});
			</script>
			</div>
			<style>
@media screen and (max-width: 768px) {
	#w3cnote-ad728 {
		display: none;
	}
}
p.note-author {
    border-bottom: 1px solid #ddd;
    font-size: 18px;
    font-weight: bold;
    color: #78a15a;
    padding-bottom: 2px;
    margin-bottom: 4px;
}
</style>
<script>
var aid = 19762;
</script>
	</div>
		
	</div>
	<div class="listcol last right-column">




<!--
	<div class="tab tab-light-blue"> 订阅</div>
	<div class="sidebar-box">
		<div class="socialicons">
			<a href="../feed" class="rss">RSS 订阅</a>
		
			<form action="//list.qq.com/cgi-bin/qf_compose_send" method="post">
			<input type="hidden" value="qf_booked_feedback" name="t">
			<input type="hidden" value="4b67b6b6c1f5e792559940cab4aebb8f1126fba880bff1a8" name="id">
			<input class="placeholder" id="feed_email" name="to" value="输入邮箱 订阅笔记" autocomplete="off">
			<input type="submit" value="订阅" class="btn btn-primary">
			</form>
		
		</div>
 
	</div>
-->	



<!--
	<div class="sidebar-box cate-list">
	<div class="sidebar-box recommend-here list-link">
			<a href="javascript:void(0);" style="font-size: 16px; color:#64854c;font-weight:bold;">笔记列表</a>
		</div>

 

</div>
-->

	 <div class="sidebar-box cate-list">
		 		

	 	<div class="sidebar-box recommend-here list-link">
			<a href="javascript:void(0);" style="font-size: 16px; color:#64854c;font-weight:bold;">教程列表</a>
		</div>
		
		<div class="cate-items"> 
				<a href="../ado">ADO 教程</a>
	<a href="../ajax">Ajax 教程</a>
	<a href="../android">Android 教程</a>
	<a href="../angularjs2">Angular2 教程</a>
	<a href="../angularjs">AngularJS 教程</a>
	<a href="../appml">AppML 教程</a>
	<a href="../asp">ASP 教程</a>
	<a href="../aspnet">ASP.NET 教程</a>
	<a href="../bootstrap">Bootstrap 教程</a>
	<a href="../bootstrap4">Bootstrap4 教程</a>
	<a href="../bootstrap5">Bootstrap5 教程</a>
	<a href="../cprogramming">C 教程</a>
	<a href="../csharp">C# 教程</a>
	<a href="../cplusplus">C++ 教程</a>
	<a href="../chartjs">Chart.js 教程</a>
	<a href="../cssref">CSS 参考手册</a>
	<a href="../css">CSS 教程</a>
	<a href="../css3">CSS3 教程</a>
	<a href="../django">Django 教程</a>
	<a href="../docker">Docker 教程</a>
	<a href="../dtd">DTD 教程</a>
	<a href="../echarts">ECharts 教程</a>
	<a href="../eclipse">Eclipse 教程</a>
	<a href="../firebug">Firebug 教程</a>
	<a href="../font-awesome">Font Awesome 图标</a>
	<a href="../foundation">Foundation 教程</a>
	<a href="../git">Git 教程</a>
	<a href="../go">Go 语言教程</a>
	<a href="../googleapi">Google 地图 API 教程</a>
	<a href="../highcharts">Highcharts 教程</a>
	<a href="../htmldom">HTML DOM 教程</a>
	<a href="../tags">HTML 参考手册</a>
	<a href="../charsets">HTML 字符集</a>
	<a href="../html">HTML 教程</a>
	<a href="../http">HTTP 教程</a>
	<a href="../ionic">ionic 教程</a>
	<a href="../ios">iOS 教程</a>
	<a href="../java">Java 教程</a>
	<a href="../jsref">JavaScript 参考手册</a>
	<a href="../js">Javascript 教程</a>
	<a href="../jeasyui">jQuery EasyUI 教程</a>
	<a href="../jquerymobile">jQuery Mobile 教程</a>
	<a href="../jqueryui">jQuery UI 教程</a>
	<a href="../jquery">jQuery 教程</a>
	<a href="../json">JSON 教程</a>
	<a href="../jsp">JSP 教程</a>
	<a href="../julia">Julia 教程</a>
	<a href="../kotlin">Kotlin 教程</a>
	<a href="../linux">Linux 教程</a>
	<a href="../lua">Lua 教程</a>
	<a href="../markdown">Markdown 教程</a>
	<a href="../matplotlib">Matplotlib 教程</a>
	<a href="../maven">Maven 教程</a>
	<a href="../memcached">Memcached 教程</a>
	<a href="../mongodb">MongoDB 教程</a>
	<a href="../mysql">MySQL 教程</a>
	<a href="../nodejs">Node.js 教程</a>
	<a href="../numpy">NumPy 教程</a>
	<a href="../pandas">Pandas 教程</a>
	<a href="../perl">Perl 教程</a>
	<a href="../php">PHP 教程</a>
	<a href="../postgresql">PostgreSQL 教程</a>
	<a href="../python3">Python 3 教程</a>
	<a href="../python">Python 基础教程</a>
	<a href="../r">R 教程</a>
	<a href="../rdf">RDF 教程</a>
	<a href="../react">React 教程</a>
	<a href="../redis">Redis 教程</a>
	<a href="../rss">RSS 教程</a>
	<a href="../ruby">Ruby 教程</a>
	<a href="../rust">Rust 教程</a>
	<a href="../sass">Sass 教程</a>
	<a href="../scala">Scala 教程</a>
	<a href="../scipy">SciPy 教程</a>
	<a href="../servlet">Servlet 教程</a>
	<a href="../soap">SOAP 教程</a>
	<a href="../sql">SQL 教程</a>
	<a href="../sqlite">SQLite 教程</a>
	<a href="../svg">SVG 教程</a>
	<a href="../svn">SVN 教程</a>
	<a href="../swift">Swift 教程</a>
	<a href="../tcpip">TCP/IP 教程</a>
	<a href="../typescript">TypeScript 教程</a>
	<a href="../vbscript">VBScript 教程</a>
	<a href="../vue2">Vue.js 教程</a>
	<a href="../vue3">Vue3 教程</a>
	<a href="../w3c">W3C 教程</a>
	<a href="../webservices">Web Service 教程</a>
	<a href="../wsdl">WSDL 教程</a>
	<a href="../xlink">XLink 教程</a>
	<a href="../dom">XML DOM 教程</a>
	<a href="../schema">XML Schema 教程</a>
	<a href="../xml">XML 教程</a>
	<a href="../xpath">XPath 教程</a>
	<a href="../xquery">XQuery 教程</a>
	<a href="../xslfo">XSLFO 教程</a>
	<a href="../xsl">XSLT 教程</a>
	<a href="../data-structures">数据结构</a>
	<a href="../regexp">正则表达式</a>
	<a href="../quiz">测验</a>
	<a href="../browsers">浏览器</a>
	<a href="../quality">网站品质</a>
	<a href="../web">网站建设指南</a>
	<a href="../hosting">网站服务器教程</a>
	<a href="../design-pattern">设计模式</a>
			
		</div> 
		 	 </div>
</div>
	</div>
</div>


<!-- 底部 -->
<div id="footer" class="mar-t50">
   <div class="runoob-block">
    <div class="runoob cf">
     <dl>
      <dt>
       在线实例
      </dt>
      <dd>
       &middot;<a target="_blank" href="../html/html-examples.html">HTML 实例</a>
      </dd>
      <dd>
       &middot;<a target="_blank" href="../css/css-examples.html">CSS 实例</a>
      </dd>
      <dd>
       &middot;<a target="_blank" href="../js/js-examples.html">JavaScript 实例</a>
      </dd>
      <dd>
       &middot;<a target="_blank" href="../ajx/ajax-examples.html">Ajax 实例</a>
      </dd>
       <dd>
       &middot;<a target="_blank" href="../jquery/jquery-examples.html">jQuery 实例</a>
      </dd>
      <dd>
       &middot;<a target="_blank" href="../xml/xml-examples.html">XML 实例</a>
      </dd>
      <dd>
       &middot;<a target="_blank" href="../java/java-examples.html">Java 实例</a>
      </dd>
     
     </dl>
     <dl>
      <dt>
      字符集&工具
      </dt>
      <dd>
       &middot; <a target="_blank" href="../charsets/html-charsets.html">HTML 字符集设置</a>
      </dd>
      <dd>
       &middot; <a target="_blank" href="../tags/html-ascii.html">HTML ASCII 字符集</a>
      </dd>
     <dd>
       &middot; <a target="_blank" href="https://c.runoob.com/front-end/6939/">JS 混淆/加密</a>
      </dd> 
      <dd>
       &middot; <a target="_blank" href="https://c.runoob.com/front-end/6232/">PNG/JPEG 图片压缩</a>
      </dd>
      <dd>
       &middot; <a target="_blank" href="../tags/html-colorpicker.html">HTML 拾色器</a>
      </dd>
      <dd>
       &middot; <a target="_blank" href="..//c.runoob.com/front-end/53">JSON 格式化工具</a>
      </dd>
      <dd>
       &middot; <a target="_blank" href="..//c.runoob.com/front-end/6680/">随机数生成器</a>
      </dd>
     </dl>
     <dl>
      <dt>
       最新更新
      </dt>
                   <dd>
       &middot;
      <a href="../matplotlib/matplotlib-imread.html" title="Matplotlib imread() 方法">Matplotlib imre...</a>
      </dd>
              <dd>
       &middot;
      <a href="../matplotlib/matplotlib-imsave.html" title="Matplotlib imsave() 方法">Matplotlib imsa...</a>
      </dd>
              <dd>
       &middot;
      <a href="../matplotlib/matplotlib-imshow.html" title="Matplotlib imshow() 方法">Matplotlib imsh...</a>
      </dd>
              <dd>
       &middot;
      <a href="../matplotlib/matplotlib-hist.html" title="Matplotlib 直方图">Matplotlib 直方图</a>
      </dd>
              <dd>
       &middot;
      <a href="../python3/python-func-object.html" title="Python object() 函数">Python object()...</a>
      </dd>
              <dd>
       &middot;
      <a href="../python3/python-ai-draw.html" title="Python AI 绘画">Python AI 绘画</a>
      </dd>
              <dd>
       &middot;
      <a href="../w3cnote/cursor-editor.html" title="神辅助 Cursor 编辑器，加入 GPT-4 让编码更轻松！">神辅助 Cursor ...</a>
      </dd>
             </dl>
     <dl>
      <dt>
       站点信息
      </dt>
      <dd>
       &middot;
       <a target="_blank" href="mailto:admin@runoob.com" rel="external nofollow">意见反馈</a>
       </dd>
      <dd>
       &middot;
      <a target="_blank" href="../disclaimer">免责声明</a>
       </dd>
      <dd>
       &middot;
       <a target="_blank" href="../aboutus">关于我们</a>
       </dd>
      <dd>
       &middot;
      <a target="_blank" href="../archives">文章归档</a>
      </dd>
    
     </dl>
    
     <div class="search-share">
      <div class="app-download">
        <div>
         <strong>关注微信</strong>
        </div>
      </div>
      <div class="share">
      <img width="128" height="128" src="/wp-content/themes/runoob/assets/images/qrcode.png" />
       </div>
     </div>
     
    </div>
   </div>
   <div class="w-1000 copyright">
     Copyright &copy; 2013-2023    <strong><a href="../" target="_blank">菜鸟教程</a></strong>&nbsp;
    <strong><a href="../" target="_blank">runoob.com</a></strong> All Rights Reserved. 备案号：<a target="_blank" rel="nofollow" href="https://beian.miit.gov.cn/">闽ICP备15012807号-1</a>
   </div>
  </div>
  <div class="fixed-btn">
    <a class="go-top" href="javascript:void(0)" title="返回顶部"> <i class="fa fa-angle-up"></i></a>
    <a class="qrcode"  href="javascript:void(0)" title="关注我们"><i class="fa fa-qrcode"></i></a>
    <a class="writer" style="display:none" href="javascript:void(0)"   title="标记/收藏"><i class="fa fa-star" aria-hidden="true"></i></a>
    <!-- qrcode modal -->
    <div id="bottom-qrcode" class="modal panel-modal hide fade in">
      <h4>微信关注</h4>
      <div class="panel-body"><img alt="微信关注" width="128" height="128" src="/wp-content/themes/runoob/assets/images/qrcode.png"></div> 
    </div>
  </div>

 <div style="display:none;">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-84264393-2"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-84264393-2');
</script>
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?3eec0b7da6548cf07db3bc477ea905ee";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

</div>
<script>
window.jsui={
    www: 'https://www.runoob.com',
    uri: 'https://www.runoob.com/wp-content/themes/runoob'
};
</script>

<script src=""></script>
<script src=""></script>

</body>
</html>